// 用户角色常量
export const USER_ROLES = {
  ADMIN: 0,
  USER: 1
} as const

export const USER_ROLE_NAMES = {
  [USER_ROLES.ADMIN]: '管理员',
  [USER_ROLES.USER]: '普通用户'
} as const

// 用户相关类型
export interface User {
  id: number
  username: string
  userName: string
  password?: string
  nickname?: string
  email?: string
  phone?: string
  avatar?: string
  bio?: string
  role: 'user' | 'admin'
  userRole?: number // 0: 管理员, 1: 普通用户
  canLogin: boolean
  isBanned: boolean
  createTime: string
  updateTime: string
}

// 商品相关类型
export interface Product {
  id: number
  name: string
  detail: string
  price: number
  oldLevel: number
  // originalPrice: number
  inventory: number
  categoryId: number
  // categoryName?: string
  userId: number
  // sellerName?: string
  coverList: string
  isBargain: boolean // 0: 不支持砍价, 1: 支持砍价
  // status: number // 0: 下架, 1: 上架, 2: 已售
  // isFavorited?: boolean // 是否已收藏
  // likes?: number // 点赞数
  // views?: number // 浏览量
  createTime: string
  userName: string
  // updateTime: string
}


// 商品分类类型
export interface Category {
  id: number
  name: string
  // description?: string
  // createTime: string
  isUse:boolean
}

// 订单相关类型
export interface Order {
  id: number
  code: string
  detail: string
  userId : number
  productId: number
  buyPrice: number
  tradeStatus: boolean // false: 未完成, ture: 已完成
  tradeTime: string
  createTime: string
}

// 评论相关类型
export interface Comment {
  id: number
  productId: number
  productName?: string
  userId: number
  userName?: string
  content: string
  rating: number
  contentType: string
  upvoteList: number
  createTime: string
}


// 用户行为类型
export interface UserAction {
  id: number
  userId: number
  productId: number
  productName?: string
  actionType: number // 1: 收藏, 2: 浏览
  createTime: string
}

// 消息类型
export interface Message {
  id: number
  userId: number
  username?: string
  userNickname?: string
  userName?: string
  userAccount?: string
  content: string
  isRead: boolean
  createTime: string
}

// 分页参数类型
export interface PageParams {
  page: number
  pageSize: number
  keyword?: string
}

// 分页响应类型
export interface PageResponse<T> {
  list: T[]
  total: number
  page: number
  pageSize: number
}

// 后端分页响应类型
export interface PageView<T = any> {
  pageSize: number
  pageNum: number
  allRow: number
  totalPage: number
  data: T[]
}

// API响应类型
export interface ApiResponse<T = any> {
  code: number
  message: string
  data: T
}

// 角色查询响应类型
export interface RoleQueryResponse {
  code: number
  message: string
  data: number // 0: 管理员, 1: 普通用户
}

// 登录请求类型
export interface LoginRequest {
  username: string
  password: string
}

// 注册请求类型
export interface RegisterRequest {
  userName: string
  userPwd: string
  userEmail?: string
  userAccount: string
  // phone?: string
}


// 商品查询参数类型
export interface ProductQueryParams extends PageParams {
  categoryId?: number
  isBargain?: number
  status?: number
  size?: number
}

// 订单查询参数类型
export interface OrderQueryParams extends PageParams {
  status?: number
}

// 用户查询参数类型
export interface UserQueryParams extends PageParams {
  canLogin?: boolean
  isBanned?: boolean
  role?: string
} 